IF exists(SELECT * FROM dbo.sysobjects WHERE name='R_TaWaBpOverzicht' AND xtype='FN') 
BEGIN
	DROP FUNCTION R_TaWaBpOverzicht
END
GO

CREATE     function R_TaWaBpOverzicht
(@deKlas varchar(5))

returns @overzicht table(inschrijvingsNr char(7),taak varchar(500),
waarschuwing varchar(500),bijkomend varchar(500))
as 
begin

declare @hulpTaak table(inschrijvingsNr char(7),
vak varchar(100)
)

declare @hulpWaarschuwing table(inschrijvingsNr char(7),
vak varchar(100)
)

declare @hulpBijkomend table(inschrijvingsNr char(7),
vak varchar(100)
)

declare @tekst varchar(500)
declare @iNr char(7)
declare @vak char(30)
declare @oudInr char(7)
declare @klas varchar(5)

declare TaCursor cursor local for 
  select v.vaknaam as vak,d.inschrijvingsNr,l.klas
  from dbo.Del_taak as d
  left join leerlingen..leerlingen as l on
  d.inschrijvingsNr=l.inschrijvingsNr
  left join leraars..vakvolgorde as v
  on v.vakcode=d.vak
  where l.klas like @deKlas
  order by d.inschrijvingsNr,v.vaknaam
for read only

declare WaCursor cursor local for 
  select v.vaknaam as vak,d.inschrijvingsNr,l.klas
  from dbo.Del_waarschuwing as d
  left join leerlingen..leerlingen as l on
  d.inschrijvingsNr=l.inschrijvingsNr
  left join leraars..vakvolgorde as v
  on v.vakcode=d.vak
  where l.klas like @deKlas
  order by d.inschrijvingsNr,v.vaknaam
for read only

declare BpCursor cursor local for 
  select v.vaknaam as vak,d.inschrijvingsNr,l.klas
  from dbo.Del_bijkomend as d
  left join leerlingen..leerlingen as l on
  d.inschrijvingsNr=l.inschrijvingsNr
  left join leraars..vakvolgorde as v
  on v.vakcode=d.vak
  where l.klas like @deKlas
  order by d.inschrijvingsNr,v.vaknaam
for read only

set @tekst = ''

open TaCursor
fetch next from TaCursor into @vak,@iNr,@klas
if (@@fetch_status=0)
begin
  set @oudInr=@iNr
  while (@@fetch_status=0)
  begin
	if (@oudInr <> @iNr)
	  begin
	    insert into @hulpTaak(inschrijvingsNr,vak)
            select @oudInr,@tekst
	    set @tekst = rtrim(@vak) + ' ' 
	    set @oudInr = @iNr	
	  end
   	else
   	set @tekst=@tekst + isnull(rtrim(@vak),'') + ' ' 
  	fetch next from TaCursor into @vak,@iNr,@klas
  end
  insert into @hulpTaak(inschrijvingsNr,vak)
  select @oudInr,@tekst
end
close TaCursor
deallocate TaCursor

set @tekst = ''
open WaCursor
fetch next from WaCursor into @vak,@iNr,@klas
if (@@fetch_status=0)
begin
  set @oudInr=@iNr
  while (@@fetch_status=0)
  begin
	if (@oudInr <> @iNr)
	  begin
	    insert into @hulpWaarschuwing(inschrijvingsNr,vak)
            select @oudInr,@tekst
	    set @tekst = rtrim(@vak) + ' '
	    set @oudInr = @iNr	
	  end
   	else
        set @tekst=@tekst + isnull(rtrim(@vak),'') + ' ' 
   	fetch next from WaCursor into @vak,@iNr,@klas
  end
   insert into @hulpWaarschuwing(inschrijvingsNr,vak)
   select @oudInr,@tekst
end
close WaCursor
deallocate WaCursor

set @tekst = ''
open BpCursor
fetch next from BpCursor into @vak,@iNr,@klas
if (@@fetch_status=0)
begin
  set @oudInr=@iNr
  while (@@fetch_status=0)
  begin
	if (@oudInr <> @iNr)
	  begin
	    insert into @hulpBijkomend(inschrijvingsNr,vak)
            select @oudInr,@tekst
	    set @tekst = rtrim(@vak) + ' '
	    set @oudInr = @iNr	
	  end
   	else
	set @tekst=@tekst + isnull(rtrim(@vak),'') + ' ' 
   	fetch next from BpCursor into @vak,@iNr,@klas
  end
  insert into @hulpBijkomend(inschrijvingsNr,vak)
  select @oudInr,@tekst
end
close BpCursor
deallocate BpCursor

insert into @overzicht(inschrijvingsNr,taak,waarschuwing,bijkomend)
select d.inschrijvingsNr,
       taak=case when len(t.vak)>0 then 'Leerling heeft een remediringstaak voor' +' '+ t.vak else null end,
       waarschuwing=case when len(w.vak)>0 then 'Leerling heeft een waarschuwing voor' +' '+ w.vak else null end,
       bijkomend=case when len(b.vak)>0 then 'Leerling heeft een bijkomende proef voor' + ' ' + b.vak else null end
      

from  leerlingen..leerlingen as l
left join Del_beslis as d
on d.inschrijvingsNr=l.inschrijvingsNr
left join @hulpTaak as t
on l.inschrijvingsNr=t.inschrijvingsNr
left join @hulpWaarschuwing as w
on l.inschrijvingsNr=w.inschrijvingsNr
left join @hulpBijkomend as b
on l.inschrijvingsNr=b.inschrijvingsNr 
where l.klas like @deKlas
return
end